package com.company._3Method;

import com.company._1class.Person;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class TestMethodDemo {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {

        Class c = Person.class;

        // 得到所有public 的方法 ，包括从父类继承下来的方法
        Method[] methods1 = c.getMethods();
        for (Method m : methods1) {
            System.out.println(m.toGenericString());
        }

        // 得到本类的所有方法
        Method[] methods2 = c.getDeclaredMethods();
        for (Method m : methods2) {
            System.out.println(m.toGenericString());
        }

        // 获取本类中的公开方法
        Method method1 = c.getMethod("work",new Class[]{});
        System.out.println(method1);
        // 获取本类中的所有方法
        Method method2 = c.getDeclaredMethod("sleep",new Class[]{});
        method2.setAccessible(true);
        System.out.println(method2);

        // 静态方法传入个null
        Method m2 = c.getMethod("aaa");
        m2.invoke(null);
    }
}
